package com.example.auth.service;

import com.example.auth.dto.ProjectDTO;
import com.example.auth.entity.Project;

import java.util.List;


public interface ProjectService {
    

    ProjectDTO createProject(ProjectDTO projectDTO);
    

    ProjectDTO updateProject(Long id, ProjectDTO projectDTO);
    

    ProjectDTO getProjectById(Long id);
    

    boolean deleteProject(Long id);
    

    List<ProjectDTO> getProjectsBySupervisor(Long supervisorId);
    

    List<ProjectDTO> getProjectsBySupervisorAndStatus(Long supervisorId, String status);

    List<ProjectDTO> getProjectsByAssignee(Long assigneeId);
    

    List<ProjectDTO> getProjectsByAssigneeAndStatus(Long assigneeId, String status);
    

    List<ProjectDTO> getProjectsByCategory(String category);
    

    ProjectDTO assignProjectToStudent(Long projectId, Long studentId);
    

    ProjectDTO updateProjectStatus(Long projectId, String status);

    ProjectDTO updateProjectStatusBasedOnTasks(Long projectId);
    

    ProjectDTO applyForProject(ProjectDTO projectDTO);
    

    ProjectDTO reviewProjectApplication(Long projectId, boolean approved);
    

    List<ProjectDTO> getPendingReviewProjects(Long supervisorId);
    
 
    boolean isUserProjectSupervisor(Long projectId, Long userId);
} 